home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / gfx / edit / AmiCAD_2.06.lha / AmiCAD / ARexx / TypeAnalyse.AmiCAD < prev    next >
Text File  |  2000-04-14  |  5KB  |  174 lines

  1. /* Choix du type d'analyse Spice */
  2. /* Version 2.00, 4 octobre 1999 (Ajout analyse du point de fonctionnement .OP) */
  3. /* Version 2.01, 14 avril 2000 (Adaptation version 2.05) */
  4. /* $VER: 2.01 (14/04/00) */
  5.  
  6. options results     /* indispensable pour récupérer le résultat des macros */
  7.  
  8. signal on error     /* pour l'interception des erreurs */
  9. signal on syntax
  10.  
  11. 'TITLE("Recherche analyse existante..."):OBJECTS'
  12. objets=result
  13. objet_analyse=0
  14. analyse=''
  15. do i=1 to objets
  16.     'FINDOBJ('i',4,-1,-1)'; i=result
  17.     if i>0 then do
  18.     'READTEXT('i')'; t=result
  19.     if left(t,10)=".ANALYSE: " then do
  20.         analyse=substr(t,10)
  21.         objet_analyse=i
  22.         leave
  23.     end
  24.     end
  25.     else leave
  26. end
  27. if analyse~='' then do
  28.     if substr(analyse,1,3)="OP" then do
  29.     'REQUEST("L''analyse actuelle"+CHR(10)+"détermine le point"+CHR(10)+"de fonctionnement"+CHR(10)+"du montage"+CHR(10)+"Voulez-vous en changer?")'
  30.     if result=1 then analyse=''
  31.     else analyse='OP'
  32.     end
  33.     else if substr(analyse,1,3)="AC" then do
  34.     'REQUEST("Le type d''analyse actuel"+CHR(10)+"est le type AC"+CHR(10)+"Voulez-vous en changer?")'
  35.     if result=1 then analyse=''
  36.     else do
  37.         analyse=edition_analyse_AC(analyse)
  38.         if analyse='' then exit
  39.     end
  40.     end
  41.     else if substr(analyse,1,3)="DC" then do
  42.     'REQUEST("Le type d''analyse actuel"+CHR(10)+"est le type DC"+CHR(10)+"Voulez-vous en changer?")'
  43.     if result=1 then analyse=''
  44.     else do
  45.         analyse=edition_analyse_DC(analyse)
  46.         if analyse='' then exit
  47.     end
  48.     end
  49.     else if upper(substr(analyse,1,5))="TRAN" then do
  50.     'REQUEST("Le type d''analyse actuel"+CHR(10)+"est le type TRAN"+CHR(10)+"Voulez-vous en changer?")'
  51.     if result=1 then analyse=''
  52.     else do
  53.         analyse=edition_analyse_TRAN(analyse)
  54.         if analyse='' then exit
  55.     end
  56.     end
  57.     else do
  58.     'MESSAGE("Type d''analyse inconnu")'
  59.     exit
  60.     end
  61.     if analyse~="" then  'SAVEALL:SETTEXT('objet_analyse',".ANALYSE: 'analyse'")'
  62. end
  63. if analyse='' then do
  64.     'SELECT("Type d''analyse à effectuer"+CHR(10)+"Point de fonctionnement"+CHR(10)+"AC"+CHR(10)+"DC"+CHR(10)+"Transient")'
  65.     select
  66.     when result=1 then do
  67.         analyse="OP"
  68.     end
  69.     when result=2 then do
  70.         analyse=edition_analyse_AC("AC DEC/OCT/LIN 100 10 1000")
  71.     end
  72.     when result=3 then do
  73.         analyse=edition_analyse_DC("DC V 1V 10V 0.01V")
  74.     end
  75.     when result=4 then do
  76.         analyse=edition_analyse_TRAN("TRAN 0.01s 1s 0s")
  77.     end
  78.     otherwise
  79.         exit
  80.     end
  81.     if analyse='' then exit
  82.     if objet_analyse>0 then 'SAVEALL:SETTEXT('objet_analyse',".ANALYSE: 'analyse'")'
  83.     else 'WRITE(".ANALYSE: 'analyse'",0,0):TITLE("Placez ce texte sur le document")'
  84. end
  85.  
  86. exit
  87.  
  88. edition_analyse_AC:
  89.     parse arg type variation nbre_pts freq_debut freq_fin
  90.     if type="AC" then do
  91.     'SELECT("Type de variation ('variation')"+CHR(10)+"Décade (DEC)"+CHR(10)+"Octave (OCT)"+CHR(10)+"Linéaire (LIN)")'
  92.     select
  93.         when result=1 then do
  94.         f="DEC "; v="par décade"
  95.         end
  96.         when result=2 then do
  97.         f="OCT "; v="par octave"
  98.         end
  99.         when result=3 then do
  100.         f="LIN "; v="de test"
  101.         end
  102.         otherwise do
  103.         return ''
  104.         end
  105.     end
  106.     'ASKNUM("Nombre de points 'v'?",'nbre_pts')'
  107.     if result='' then return ""
  108.     else f=f||result
  109.     'ASKTEXT("Quelle est la fréquence de début?","'freq_debut'")'
  110.     if result='' then return ""
  111.     else f=f||" "||result
  112.     freq_fin=strip(freq_fin)
  113.     'ASKTEXT("Quelle est la fréquence de fin?","'freq_fin'")'
  114.     if result='' then return ""
  115.     else analyse="AC "||f||' '||result
  116.     'MESSAGE("Attention: pour ce type"+CHR(10)+"d''analyse il faut utiliser"+CHR(10)+"un générateur de signal"+CHR(10)+"de valeur AC x")'
  117.     return analyse
  118.     end
  119.     return ''
  120.  
  121. edition_analyse_DC:
  122.     parse arg type source vmin vmax pas
  123.     if type='DC' then do
  124.     'UNMARK(-1):MESSAGE("Vous devez maintenant"+CHR(10)+"sélectionner une source")'
  125.     'PICKOBJ("Sélectionnez le générateur à faire varier.")'
  126.     f=result
  127.     if f<1 then return ''
  128.     'MARK('f'):TYPE('f')'
  129.     if result=5 then 'READTEXT('f')'
  130.     else 'READTEXT(GETREF('f'))'
  131.     f=result
  132.     'V0=ASKTEXT("Quelle est la valeur de départ?","'vmin'")'
  133.     if result='' then return ''
  134.     else f=f||' '||result
  135.     'V1=ASKTEXT("Quelle est la valeur finale.","'vmax'")'
  136.     if result='' then return ''
  137.     else f=f||' '||result
  138.     pas=strip(pas)
  139.     'ASKTEXT("Quel est l''incrément?","'pas'")'
  140.     if result='' then return ''
  141.     else analyse="DC "||f||' '||result
  142.     return analyse
  143.     end
  144.     return ''
  145.  
  146. edition_analyse_TRAN:
  147.     parse arg type pas tmax tdebut
  148.     if upper(type)='TRAN' then do
  149.     'ASKTEXT("Temps de simulation?","'tmax'")'
  150.     tmax=strip(result)
  151.     if tmax='' then return ''
  152.     pas=strip(pas)
  153.     'ASKTEXT("Pas de simulation?","'pas'")'
  154.     pas=strip(result)
  155.     if pas='' then return ''
  156.     tdebut=strip(tdebut)
  157.     'ASKTEXT("Temps de début de la simulation?","'tdebut'")'
  158.     tdebut=strip(result)
  159.     if tdebut='' then return ''
  160.     analyse="tran "||pas||" "||tmax||" "||tdebut
  161.     return analyse
  162.     end
  163.     return ''
  164.  
  165. /* Traitement des erreurs, interruption du programme */
  166. syntax:
  167. erreur=RC
  168. 'MESSAGE("Script TypeAnalyse.AmiCAD"+CHR(10)+"Erreur de syntaxe"+CHR(10)+"en ligne 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
  169. exit
  170.  
  171. error:
  172. 'MESSAGE("Script TypeAnalyse.AmiCAD"+CHR(10)+"Erreur en ligne 'SIGL'")'
  173. exit
  174.